RBI プロキシの紹介
SOFTCAMP SHIELDGate 隔離ブラウザ連携のための HTTP/HTTPS プロキシサービス
📋 目次
概要
RBIProxyはユーザーの一般的なブラウザトラフィックをSOFTCAMP SHIELDGate 隔離ブラウザ自動接続する中間プロキシサーバーです。
ユーザーは普段通りウェブブラウジングを行いますが、すべてのウェブ接続は隔離された環境(RBI)で実行され、セキュリティの脅威から安全に保護されます。
核心価値
- 透明なセキュリティ: ユーザーエクスペリエンスを損なうことなくセキュリティを強化する(自動リダイレクト)
- 中央集中型制御: 単一プロキシで全てのウェブトラフィックを中央で制御
- 簡単な中継構造: URL変換およびSHIELDGate連携のみを実行(複雑なポリシーはSHIELDGateで処理)
RBIProxyとは?
RBI (Remote Browser Isolation)
リモートブラウザ隔離技術はユーザーのウェブブラウジングを物理的に隔離されたリモート環境で実行するセキュリティソリューションです。
伝統的なウェブ接続:
[ユーザーPC] ──→ [インターネットウェブサイト]
↑
マルウェアダウンロードリスク
ゼロデイ攻撃露出
フィッシングサイト直接接続
RBI適用後:
[ユーザーPC] ──→ [隔離されたブラウザ] ──→ [インターネットウェブサイト]
↑
マルウェアが隔離環境でのみ実行
ユーザーPCは安全
RBIProxyの役割
RBIProxyはPACフィルタリングを通過したトラフィックをSHIELDGateに変換する中継機です:
🎯 フィルタリング構造
┌──────────────────────────────────────────────────────────────┐
│ PACファイル (ユーザーPCで実行) │
│ "どのサイトはプロキシを経由し、どのサイトは直接?" │
└────────────┬─────────────────────────────┬───────────────────┘
↓ ↓
[許可されたサイト] [ブロックされたサイト]
naver.com example.com
microsoft.com unknown-site.com
内部IP (192.168.x.x) その他すべてのサイト
↓ ↓
DIRECT (プロキシを経由しない) PROXY 10.14.10.176:9999
↓ ↓
[直接接続] ┌─────────────────────────────┐
│ RBIProxyサーバー │
│ "URL変換器" │
└──────┬──────────────────────┘
↓
URL変換を実行
↓
https://shieldgate.softcamp.co.kr/
gate-proxy?currentTab=true&url=元のURL
↓
HTMLリダイレクト応答
↓
┌───────────────────────┐
│ ユーザーブラウザが │
│ 自動的に移動 │
└──────┬────────────────┘
↓
┌─────────────────┐
│ SHIELDGate │
│ gate-proxy │
└──────┬──────────┘
↓
┌─────────────────┐
│ rb-app │
│ (隔離ブラウザ) │
└──────┬──────────┘
↓
[実際のウェブサイト接続]
具体的な例
例 1: naver.com 接続 (許可されたサイト)
[ユーザー] naver.com 入力
↓
[PAC ファイル] "naver.com? あれ?君は許可なんだね!"
↓
[決定] "じゃあ君は DIRECT"
↓
[結果] naver.com に直接接続 ✅ (RBIProxy を経由せず)
例2: example.com 接続 (ブロック対象サイト)
[ユーザー] example.com 入力
↓
[PAC ファイル] "example.com? ホワイトリストにありません"
↓
[決定] "あなたは RBIProxy に送ります"
↓
[RBIProxy] URL 変換
元の: http://example.com
→
変換: https://shieldgate.softcamp.co.kr/gate-proxy?currentTab=true&url=http://example.com
↓
[HTML リダイレクト応答]
<meta http-equiv="refresh" content="0;url=変換されたURL"/>
↓
[ユーザーブラウザ] 自動的に SHIELDGate URL に移動
↓
[SHIELDGate] gate-proxy が rb-app(隔離ブラウザ)を実行
↓
[rb-app] 隔離された環境で example.com にアクセス
↓
[結果] ユーザーは隔離ブラウザで example.com を利用 ✅
全体アーキテクチャ
単純化されたフローチャート
┌─────────────────────┐
│ ユーザーPC │
│ (一般ブラウザ) │
│ Chrome / Edgeなど │
└──────────┬──────────┘
│
│ ① Windows プロキシ設定 (PAC)
│ - 許可サイト → DIRECT
│ - ブロックサイト → PROXY 10.14.10.176:9999
↓
┌─────────────────────┐
│ RBIProxyサーバー │
│ (このプロジェクト) │
│ - URL変換のみ │
└──────────┬──────────┘
│
│ ② HTMLリダイレクト
│ shieldgate.softcamp.co.kr/
│ gate-proxy?currentTab=true&url=元のURL
↓
┌─────────────────────┐
│ SHIELDGate │
│ (隔離ブラウザ) │
│ - gate-proxy │
└──────────┬──────────┘
│
│ ③ rb-app実行
↓
┌─────────────────────┐
│ rb-app │
│ (隔離ブラウザ) │
└──────────┬──────────┘
│
│ ④ 実際のウェブサイト接続
↓
┌─────────────────────┐
│ インターネットウェブサイト │
│ example.comなど │
└─────────────────────┘
↓
┌─────────────────────┐
│ インターネットウェブサイト │
│ example.com など │
└─────────────────────┘
### 詳細データフロー
**重要**: PACファイルが1次フィルタリングを実行します!
┌─────────────────────────────────────────────────────────────────┐
│ ユーザーPC │
│ │
│ [Chrome/Edge] ユーザーがURLを入力
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ PACファイル (フィルタリング) │ │
│ │ "このサイトはどこに送る?" │ │
│ └──────────┬──────────────────────────────────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ ↓ ↓ │
│ [許可サイト] [ブロック対象] │
│ naver.com example.com │
│ ↓ ↓ │
│ DIRECT PROXY 10.14.10.176:9999 │
│ │
└──────┼──────────────┼──────────────────────────────────────────┘
│ │
↓ │ RBIProxyに渡す
[naver.com] ↓
直接接続 ┌─────────────────────────────────────────────────────────────────┐
│ RBIProxy サーバー │
│ (URL 変換器) │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 1. リクエスト受信 (9999 ポート) │ │
│ └──────────────────┬───────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────▼───────────────────────────────────────┐ │
│ │ 2. URL 変換 │ │
│ │ 原本:http://example.com │ │
│ │ → │ │
│ │ 変換:https://shieldgate.softcamp.co.kr/ │ │
│ │ gate-proxy?currentTab=true&url=http://example.com│ │
│ └──────────────────┬───────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────▼───────────────────────────────────────┐ │
│ │ 3. HTML リダイレクト応答 │ │
│ │ │ │
│ └──────────────────┬───────────────────────────────────────┘ │
│ │ │
└─────────────────────┼────────────────────────────────────────────┘
│
↓
┌─────────────────────────────┐
│ ユーザーのブラウザが │
│ SHIELDGateに自動的に移動 │
└─────────────┬───────────────┘
↓
┌─────── ──────────────┐
│ SHIELDGate │
│ gate-proxy │
└──────────┬──────────┘
│
│ rb-app 実行
↓
┌─────────────────────┐
│ rb-app │
│ (隔離ブラウザ) │
└──────────┬──────────┘
│
│ 直接インターネット接続
↓
┌─────────────────────┐
│ インターネットウェブサイト │
│ example.com │
└─────────────────────┘
***
## 主要構成要素
### 1. Windows PAC (Proxy Auto-Config)
**位置**: ユーザーPCのWindowsプロキシ設定
**役割**: **1次フィルタリング - サイトごとのプロキシ使用の有無を決定**
**重要**: PACファイルが最初に判断します!
- ✅ **許可サイト** (naver.com, microsoft.comなど) → `DIRECT` (プロキシを通さない)
- ⚠️ **一般サイト** (example.comなど) → `PROXY 10.14.10.176:9999` (RBIProxyで)
**例 PACファイル** (`pac.js`):
```javascript
function FindProxyForURL(url, host) \{
// 1. SHIELDGate自体はDIRECT (無限ループ防止)
if (dnsDomainIs(host, "shieldgate.softcamp.co.kr") ||
dnsDomainIs(host, "security365.co.kr")) \{
return "DIRECT";
\}
// 2. 許可サイトリスト (例外処理)
if (dnsDomainIs(host, "naver.com") ||
dnsDomainIs(host, "microsoft.com") ||
dnsDomainIs(host, "office365.com")) \{
return "DIRECT"; // ← naver.com? あれ? 君は許可されてるんだね! DIRECT!
\}
// 3. 内部ネットワークはDIRECT
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) \{
return "DIRECT";
\}
// 4. 基本ルール: RBIProxyに送信
return "PROXY 10.14.10.176:9999"; // ← example.com? 君はRBIProxyで!
\}
実際の動作:
ユーザーが naver.com を入力
↓
PAC: "naver.com? あれ? 君は許可されているんだ!"
↓
PAC: "じゃあ君は DIRECT"
↓
naver.com に直接接続 ✅ (RBIProxy を経由しない)
ユーザーが example.com を入力
↓
PAC: "example.com? 許可リストにないね"
↓
PAC: "君は RBIProxy に送る" (PROXY 10.14.10.176:9999)
↓
RBIProxy に転送 → 次のステップへ進む
PACファイルの適用方法:
-
手動適用(個別PC):
- Windows 設定 → ネットワークとインターネット → プロキシ
- "自動プロキシ設定の使用" を有効にする
- スクリプトアドレス:
http://10.14.10.176:9999/RestAPI/pac.js
-
GPOの適用(ドメイン一括適用):
グループ ポリシー エディター
→ ユーザー構成 → 基本設定 → Windows 設定 → レジストリ
→ HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
→ AutoConfigURL = "http://10.14.10.176:9999/RestAPI/pac.js"" -
PACファイルのダウンロード:
# RBIProxy가 제공하는 PAC 파일
curl http://10.14.10.176:9999/RestAPI/pac.js -o pac.js
2. RBIProxy サーバー
言語: Go (Golang)
ポート:
- 9999: プロキシサーバー (メイン機能)
- 80: REST API サーバー (管理/モニタリング)
デプロイ: Kubernetes (Docker コンテナ)
主要な役割: "URL 変換ツール"
PACから送信されたすべてのトラフィックを受け取ってSHIELDGate URL 形式に変換します。
┌─────────────────────────────────────────────────────┐
│ RBIProxy サーバー (URL 変換器) │
│ │
│ ① プロキシリクエスト受信 (9999 ポート) │
│ ↓ │
│ ② URL 変換 │
│ 元の: http://example.com │
│ → │
│ 変換: https://shieldgate.softcamp.co.kr/ │
│ gate-proxy?currentTab=true&url=元のURL │
│ ↓ │
│ ③ HTML リダイレクト応答 │
│ <meta http-equiv="refresh" │
│ content="0;url=変換URL"/> │
│ │
└─────────────────────────────────────────────────────┘
核心コード (src/main.go317~320行):
func redirectUrl(url string) string \{
// SHIELDGate 방식: URL을 쿼리 파라미터로 전달
return cfg.RBIProxy.RBI.BaseURL +
"gate-proxy?currentTab=true&url=" + url
\}
実際の変換例:
입력: http://example.com
→
출력: https://shieldgate.softcamp.co.kr/gate-proxy?currentTab=true&url=http://example.com
3. SHIELDGate (隔離ブラウザ)
URL: https://shieldgate.softcamp.co.kr
構成:
- gate-proxy: ウェブインターフェース (URLを受け取ってrb-appを実行)
- rb-app: 隔離ブラウザエンジン (実際のウェブサイトへの接続およびレンダリング)
役割:
- gate-proxyがURLパラメータを受け取ってrb-app(隔離ブラウザ)を実行
- rb-appが隔離された環境で実際のウェブサイトをレンダリング
- ユーザーに画面のみストリーミング
- セキュリティポリシーの適用(ダウンロード/アップロード/コピー制御など)
URL 規約:
https://shieldgate.softcamp.co.kr/gate-proxy?currentTab=true&url=<원본URL>